
export const resultBbox1 = (box: any, length = 1000, height = 300) => {
  const [x, y, h] = box;
  return [
    x - length,
    y - length,
    h - height,
    x + length,
    y + length,
    h ,
  ]
}
export const resultBbox = (box: any, length = 10, height = 50) => {
  // let length = 10;
  // let height = 50;
  const [x, y, h] = box;
  return [
    x - length,
    y - length,
    h,
    x + length,
    y + length,
    h + height
  ]
}
// export const resultBbox1=(points:any, length = 10000, height = 1000)=> {
//   const point = getPointsCenter(points)
//   return [
//     point[0] - length,
//     point[1] - length,
//     -height,
//     point[0] + length,
//     point[1] + length,
//     height
//   ]
// }

// 洪峰模拟
/**
* 计算水流体中点
*  pamras points 点坐标数组
*/
 const getPointsCenter = (points: any) => {
  var point_num = points.length // 坐标点个数
  if (point_num === 0) return null // 如果没有点，返回null

  // 初始化累加器
  var X = 0,
    Y = 0,
    Z = 0,
    H = 0 // X, Y, Z 用于计算经纬度中心，H 用于累加高度

  for (let i = 0; i < point_num; i++) {
    let [lat, lng, height] = points[i] // 解构数组元素，得到纬度、经度和高度
    lat = (parseFloat(lat) * Math.PI) / 180 // 将纬度转换为弧度
    lng = (parseFloat(lng) * Math.PI) / 180 // 将经度转换为弧度

    // 将经纬度转换为三维笛卡尔坐标
    var x = Math.cos(lat) * Math.cos(lng)
    var y = Math.cos(lat) * Math.sin(lng)
    var z = Math.sin(lat)

    // 累加每个点的 x, y, z 值
    X += x
    Y += y
    Z += z

    // 累加高度值（注意：这里只是简单地累加，并没有进行平均或其他处理）
    H += parseFloat(height)
  }

  // 计算经纬度的平均值
  X = X / point_num
  Y = Y / point_num
  Z = Z / point_num

  // 反转换回经纬度
  var centerLng = Math.atan2(Y, X)
  var centerLat = Math.atan2(Z, Math.sqrt(X * X + Y * Y))

  // 将弧度转换回度数
  centerLng = (centerLng * 180) / Math.PI
  centerLat = (centerLat * 180) / Math.PI

  // 计算平均高度（如果需要的话）
  var averageHeight = H / point_num

  // 返回结果：中心点的经纬度（度数）和平均高度（如果需要）
  // 注意：这里的平均高度可能并没有实际意义，因为它没有考虑地形等因素
  return [centerLat, centerLng, averageHeight]
}
